package com.gl.glbooks.managers
{
	import com.gl.glbooks.view.NovedadesPanel;
	import com.gl.glbooks.vos.Categoria;
	import com.gl.glbooks.vos.Libro;
	import com.gl.glbooks.vos.Usuario;
	
	import flash.display.DisplayObject;
	import flash.events.Event;
	
	import mx.collections.ArrayCollection;
	import mx.core.FlexGlobals;
	import mx.effects.Move;
	import mx.events.FlexEvent;
	import mx.managers.PopUpManager;

	public class NovedadesManager
	{
		
		private var novedadesPanel:NovedadesPanel = new NovedadesPanel();
		
		private	var move:Move = new Move();
		
		[Bindable]
		public var novedadesState:String;
		
		[Bindable]
		public var novedadesComentarios:ArrayCollection;

		[Bindable]
		public var novedadesLibros:ArrayCollection;
		
		[Bindable]
		public var usuarioSeleccionado:Usuario;
		
		[Bindable]
		public var cantidadNovedades:Number;
		
		public function setNovedadesState( state:String ):void
		{
			novedadesState = state;
		}
		
		public function setUsuarioSeleccionado(usuario:Usuario):void{
			usuarioSeleccionado=usuario;
		}
		
		public function setNovedadesComentarios(value:ArrayCollection){
			
			novedadesComentarios = value;
		}
		
		public function setNovedadesLibros(value:ArrayCollection){
			novedadesLibros = value;
			novedadesLibros.filterFunction = novedadesFilterFunction;	
			novedadesLibros.refresh();
		}
		
		private function novedadesFilterFunction( obj:Object ):Boolean
		{
			if( obj is Libro )
			{
				var libro:Libro=obj as Libro
				var usuario:Usuario;	
				for each(var categoria:Categoria in usuarioSeleccionado.novedades)
				{
					if( libro.categoria.nombre==categoria.nombre)
					{
						return true;
					}
				}
			}	
				return false;	
		}
	
		public function NovedadesManager()
		{
			PopUpManager.addPopUp( novedadesPanel, FlexGlobals.topLevelApplication as DisplayObject );
			PopUpManager.bringToFront( novedadesPanel );
			novedadesPanel.visible = false;
			novedadesPanel.x = ( FlexGlobals.topLevelApplication as DisplayObject ).width - novedadesPanel.width - 915;
			novedadesPanel.y = -novedadesPanel.height;
			novedadesPanel.addEventListener( FlexEvent.HIDE, ocultarNovedad );
			
		}
		
		public function mostrarTituloNovedad():void
		{
			novedadesPanel.visible = true;
			move.yTo = 0;
			move.play([ novedadesPanel ]);
		}

		public function mostrarCompletaNovedad():void
		{
			move.xTo = 0;
			move.play([ novedadesPanel ]);
		}
		public function ocultarNovedad(event:Event=null):void
		{
			move.xTo = -novedadesPanel.width;
			move.play([ novedadesPanel ]);
		}
	}
}